let utils = data["utils"];
let STUtil = data["STUtil"];
let Node = data["Node"];
let SplayTree = data["SplayTree"];

console.log("04Splaytree");



function __generator(thisArg, body) {
  var _ = {
    label: 0,
    sent: function () {
      if (1 & t[0]) throw t[1];
      return t[1]
    },
    trys: [],
    ops: []
  },
    f, y, t, g;
  g = {
    next: verb(0),
    throw: verb(1),
    return: verb(2)
  };
  // "function" == typeof symbol && (g[symbol.iterator] = function () {
  //     return this
  // })
  return g;

  function verb(n) {
    return function (v) {
      return step([n, v])
    }
  }

  function step(op) {
    if (f) throw new console.error("Generator is already executing.");
    for (; _;) try {
      if (f = 1, y && (t = 2 & op[0] ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
      switch (y = 0, t && (op = [2 & op[0], t.value]), op[0]) {
        case 0:
        case 1:
          t = op;
          break;
        case 4:
          return _.label++ , {
            value: op[1],
            done: !1
          };
        case 5:
          _.label++ , y = op[1], op = [0];
          continue;
        case 7:
          op = _.ops.pop(), _.trys.pop();
          continue;
        default:
          if (!(t = (t = _.trys).length > 0 && t[t.length - 1]) && (6 === op[0] || 2 === op[0])) {
            _ = 0;
            continue
          }
          if (3 === op[0] && (!t || op[1] > t[0] && op[1] < t[3])) {
            _.label = op[1];
            break
          }
          if (6 === op[0] && _.label < t[1]) {
            _.label = t[1], t = op;
            break
          }
          if (t && _.label < t[2]) {
            _.label = t[2], _.ops.push(op);
            break
          }
          t[2] && _.ops.pop(), _.trys.pop();
          continue
      }
      op = body.call(thisArg, _)
    } catch (e) {
      op = [6, e], y = 0
    } finally {
        f = t = 0
      }
    if (5 & op[0]) throw op[1];
    return {
      value: op[0] ? op[1] : void 0,
      done: !0
    }
  }
}
Object.defineProperty(SplayTree.prototype, "size", {
  get: function () {
    return this._size
  },
  enumerable: !0,
  configurable: !0
}), Object.defineProperty(SplayTree.prototype, "root", {
  get: function () {
    return this._root
  },
  enumerable: !0,
  configurable: !0
});
//  SplayTree.prototype[symbol.iterator] = function () {
//     var n;
//     return __generator(this, (function (_a) {
//         switch (_a.label) {
//             case 0:
//                 n = this.minNode(), _a.label = 1;
//             case 1:
//                 return n ? [4, n] : [3, 3];
//             case 2:
//                 return _a.sent(), n = this.next(n), [3, 1];
//             case 3:
//                 return [2]
//         }
//     }))
// };


return {
  "utils": utils,
  "STUtil": STUtil,
  "Node": Node,
  "SplayTree": SplayTree
}